import java.util.Scanner;

public class Test3 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要检验是否满足回文的字符串：");
        String str = sc.nextLine();

        boolean flag = isPalindrome(str);//接收检验结果（标志：true——是，false——不是）
        if(flag){

            System.out.println("是回文");

        }else {

            System.out.println("不是回文");

        }



    }
    public static boolean isNumOrCharacter(char ch){

        if(ch >= '0' && ch <= '9'||ch >= 'a' && ch <= 'z'){

            return true;

        }
        return false;

    }
    public static boolean isPalindrome(String s){

        s=s.toLowerCase();
        int i= 0;
        int j = s.length()-1;
        while(i<j){
            while(!isNumOrCharacter(s.charAt(i))){//如果这个字符 不是 字母或数字字符
                i++;
            }
            //此时i下标是巴拉巴拉

            while(!isNumOrCharacter(s.charAt(j))){//优化，防止越界i<j && !isNumOrCharacter(s.charAt(j))
                j--;
            }
            //此时j下标是巴拉巴拉

            if(s.charAt(i)!=s.charAt(j)){//优化，防止越界i<j &&......

                return false;
            }
            i++;
            j--;
            //进行比较是不是一样 —— 满足回文
        }
        return true;
        //能走到这里，说明，前边都满足回文，整体满足回文


    }




}

